Presently, multimedia communication devices (MCD's), such as analog and digital modems and more generally communication devices that support voice and video capabilities, are used to transfer or transport data between data terminal equipment (DTE) such as personal computers, workstations, mainframe computers, and other terminals, over various communications channels such as telephone lines, T1 lines, or ISDN lines, which also may be part of a computer network. Typically, the data is transmitted, received, or otherwise transferred in the form of a digitally encoded communication signal, which may include, for example, digitally encoded data transmitted on a carrier signal, having a predetermined or otherwise specified carrier frequency, that modulates a predetermined constellation of signal points (such as quadrature amplitude modulation (QAM)), at a predetermined signaling or symbol rate (often referred to as a baud rate). For a given channel, the data signaling rate will vary as a function of both the symbol rate and the number of signal points or size of the constellation.
At the sending or transmitting MCD, the set of constellation signal points corresponding to the digital code or value to be sent is modulated by a carrier signal and transported over the communication channel. The channel, however, typically introduces a variety of impairments that affect the transmitted signal, such as amplitude and phase distortion, envelope delay distortion, non-linear distortion, and additive noise and interferences.
MCD's typically execute multiple data transfer-related operations, which includes signal processing operations such as echo cancellation, signal equalization, and forward error correction coding, as well as data processing operations, such as data compression, voice compression, and linklayer error correction. These operations are intended to compensate for effects of noise and interference that might be introduced by the communication channel, and to enhance user data throughput. The multiple data transfer-related operations are typically executed by some type of host-based processor (such as a personal computer) or embedded processor (such as a dedicated digital signal processor microprocessor, or micro-controller).
An MCD typically allocates a static amount of processor resources, which includes MIPS (millions of instructions per second) and memory, sufficient to provide for the performance of a full complement of data transfer-related operations. That is, in order to process data for transmission over a communication channel, the MCD will allocate sufficient processor resources to execute, and will execute, a comprehensive instruction set for data transfer-related operations, that includes multiple data processing operations such as data compression or voice compression, as well as signal processing operations designed to compensate for worst case channel conditions.
With the advent of fast processors capable of handling the entire MCD function with a fraction of its processing power, the MCD may share the processor with other tasks. For example, the functions of multiple MCD's might be implemented on a single processor, or the functions of an MCD might be implemented on the central processing unit (CPU) of a personal computer running a plurality of other applications. In situations such as these, the static processor resource allocation strategy may not be optimal. For example, while an MCD typically allocates a sufficient amount of resources to process signals in worst case channel conditions, the vast majority of channel conditions are relatively benign and do not require such complex signal processing. By allocating processor resources under the assumption of worst case conditions, processor resources are allocated to tasks that are unnecessary in benign channel conditions. These latter processor resources can be applied to other tasks in such instances.
Therefore, a need exists for a method and apparatus for adapting the utilization of the processor resources. A still further need exists for a method and apparatus for dynamically allocating the processor resources based upon the channel conditions, applications, and quality of service requirements.